// 获取数据真实类型
export function getDataType(values: any) {
    return Object
        .prototype
        .toString
        .call(values)
        .replace(/\[(\S+) (\S+)\]/, '$2')
}

// 延迟执行函数
export function nextTick(fn: Function, timeout: number = 0) {
    setTimeout(fn, timeout)
}

// 防抖
export function debounce(func: Function, delay: number) {
    let timerId: any;

    return function (...args: any[]) {
        // @ts-ignore
        const context = this;

        clearTimeout(timerId);

        timerId = setTimeout(() => {
            func.apply(context, args);
        }, delay);
    };
}

// 生成一个 [min, max) 范围内的随机浮动数
export function getRandomFloat(min: number, max: number): number {
    return Math.floor(Math.random() * (max - min) + min);
}

// 根据参数返回指定数量的随机数数组
export function getRandomArray(length: number, min: number, max: number): number[] {
    const result: number[] = [];

    for (let i = 0; i < length; i++) {
        result.push(getRandomFloat(min, max));
    }

    return result;
}
